# 应用场景： 某指标随时间的状态变化


# 引入matplotlib包
import matplotlib.pyplot as plt

#  处理中文异常的办法
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为中文黑体，例如 'SimHei' 或 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题

# ============需求1：展示一个城市一周的天气情况
# 实现步骤：1.创建画布 2.绘制图像 3.显示图像
# 设置画布属性： figsize：画布大小 dpi: 图像的清晰度
plt.figure(figsize=(20, 8), dpi=80)
# 绘制图像
plt.plot([1, 2, 3, 4, 5, 6, 7], [17, 18, 21, 14, 25, 35, 26])

# 保存图像==不能写在show()后面，不然保存的会是空的图像
# plt.savefig("../file/plt.jpg")
# 显示 并释放图像
# plt.show()

import random

# ============需求2：画出莫一个城市11-12点一个小时内每分钟的温度变化，温度在15-18度之间
# 准备数据 x: 0-59,60个数, y: 生成x个随机值在[15-18)的数据
x = range(60)
y = [random.uniform(15, 18) for i in x]
# plt.figure(figsize=(20, 8), dpi=80)
# ============需求4：创建多个绘图区，主要就是将plt改成axes[i]
figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)
y2 = [random.uniform(11, 13) for i in x]
# 绘制图像
axes[0].plot(x, y, label='城市1')
axes[1].plot(x, y2, color='red', linestyle='-.', label='城市2')
# 显示图例
axes[0].legend()
axes[1].legend()
x_label = ['11:{}'.format(i) for i in x]
# 1. x、y轴的刻度: 设置步长为5
axes[0].set_xticks(x[::5])
axes[0].set_xticklabels(x_label[::5])
axes[0].set_yticks(range(40)[::5])
axes[1].set_xticks(x[::5])
axes[1].set_xticklabels(x_label[::5])
axes[1].set_yticks(range(40)[::5])
# 2. 添加网格
axes[0].grid()
axes[1].grid()
# 3. 添加xy轴的标签和标题
axes[0].set_xlabel("时间变化")
axes[0].set_ylabel("温度变化")
axes[0].set_title("某城市11-12点的温度变化")
axes[1].set_xlabel("时间变化")
axes[1].set_ylabel("温度变化")
axes[1].set_title("某城市11-12点的温度变化")

plt.show()

plt.plot(x, y, label='城市1')
# ============需求3：在添加一个城市的温度变化(只需要下面两行)
y2 = [random.uniform(11, 13) for i in x]
# color：画线的颜色 linestyle：线条类型 label： 图例名称
plt.plot(x, y2, color='red', linestyle='-.', label='城市2')
# 如果x轴的值要查询修改： 不支持中文（需要配置）
x_label = ['11:{}'.format(i) for i in x]
# 显示图例
plt.legend()
# 辅助层修改
# 1. x、y轴的刻度: 设置步长为5
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(40)[::5])
# 2. 添加网格
plt.grid()
# 3. 添加xy轴的标签和标题
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("某城市11-12点的温度变化")

plt.show()
